package com.haina.vote.service.impl;
import com.github.pagehelper.PageHelper;
import com.haina.vote.entity.IpInfo;
import com.haina.vote.entity.Vote;
import com.haina.vote.entity.VoteItem;
import com.haina.vote.mapper.VoteMapper;
import com.haina.vote.service.IVoteService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
@Service
@Transactional
public class VoteService implements IVoteService {
    @Autowired
    private VoteMapper voteMapper;
    //查询全部投票列表
    @Override
    public List<Vote> findAllVote(Integer page,Integer pageSize) {
        PageHelper.startPage(page,pageSize);
        return voteMapper.findAllVote();
    }
    //新增投票
    @Override
    public void addVote(Vote vote) {
        voteMapper.addVote(vote);
    }
    //删除投票
    @Override
    public void deleteVote(Integer id) {
        //首先通过该投票的id查询每一个投票选项
        List<VoteItem> voteItemList = voteMapper.findItemByVoteId(id);
        //删除所有关于该投票的ip访问记录
        voteMapper.deleteAllIpByVoteId(id);
        for (VoteItem voteItem : voteItemList) {
            Integer item_id=voteItem.getItem_id();
            voteMapper.deleteItem(item_id);
        }
        voteMapper.deleteVote(id);
    }
    //查询全部选项
    public List<VoteItem> findAllItem(Integer page,Integer pageSize){
        PageHelper.startPage(page,pageSize);
        return voteMapper.findAllVoteItem();
    }
    //新建选项
    @Override
    public void addItem(VoteItem voteItem) {
        voteMapper.addItem(voteItem);
    }
    //修改选项
    @Override
    public void updateItem(VoteItem voteItem) {
        voteMapper.updateItem(voteItem);
    }
    //查询投票信息并生成对应类型的页面
    @Override
    public List<VoteItem> findVoteInfo(Integer id) {
        return voteMapper.findVoteInfo(id);
    }
    //查询不分页的投票数据用于选项关联
    @Override
    public List<Vote> findvote() {
        return voteMapper.findVote();
    }
    //通过ip地址进行查询
    @Override
    public IpInfo findIpInfo(String ip,Integer vote_id) {
        return voteMapper.findIpInfo(ip,vote_id);
    }
    //添加ip信息
    @Override
    public void addIPInfo(IpInfo ipInfo1) {
        voteMapper.addIpInfo(ipInfo1);
    }
    //更新当前ip的请求次数
    @Override
    public void updateIpInfo(Integer req_num,Integer ip_id) {
        voteMapper.updateIpInfo(req_num,ip_id);
    }
    //查询选项当前的票数
    @Override
    public Integer findItemTimes(Integer item_id) {
        return voteMapper.findItemTimes(item_id);
    }
    //更新选项的总投票数
    @Override
    public void updateVoteItemTimes(Integer item_id, Integer times) {
        voteMapper.updateItemTimes(item_id,times);
    }
    //删除选项
    @Override
    public void deleteItem(Integer item_id) {
        voteMapper.deleteItem(item_id);
    }
    //查询选项详情
    @Override
    public VoteItem findItemById(Integer item_id) {
        return voteMapper.findItemById(item_id);
    }
    //根据id查询问卷信息
    @Override
    public Vote findVoteById(Integer id) {
        return voteMapper.findVoteById(id);
    }
    //修改投票
    @Override
    public void updateVote(Vote vote) {
        voteMapper.updateVote(vote);
    }

}
